<?php
/**
 * Шаблон постраничного вывода
 *
 * предназначен для работы с постраничным выводом. Выводит списки страниц.
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class View_Pager {

  static $showNumberOfElements = false;
  static $showPrevNext = false;
  public function __construct() {}

  /**
   * Функция выдает блок постраничного вывода для страниц вида .../n/
   *
   * @param string $link
   * @param integer $numberOfPages
   * @param integer $pageNumber
   * @param string $jsCode
   */
  public static function getPages($link, $numberOfPages, $pageNumber = 1, $jsCode ='', $after = '', $numberOfElements = 0) {
    if ($numberOfPages > 1) {
      echo '<div class="numPages">';
      
      // Отображаем кнопку "Назад" при необходимости
      if (self::$showNumberOfElements) {
        if ($pageNumber > 1) echo  '<a href="' . $link . ($pageNumber - 1) . $after . '"><b class="buttonPrev">&lt; Пред.</b></a>';
        else echo '<b class="buttonPrev1">&lt; Пред.</b>';
      }

      // Отображаем номера страниц, идущих до текущей
      for ($i = $pageNumber - 6; $i < $pageNumber; $i++) {
        if ($i > 0) echo '<a href="' . $link . $i . '' . $after . '" class="buttonPage">'.$i.'</a>';
      }
      
      // Отображаем номер текущей страницы
      echo '<span class="buttonPageSel">' . $pageNumber . '</span>';

      // Отображаем номера страниц, идущих после текущей
      for ($i = $pageNumber + 1; $i <= $pageNumber + 6; $i++) {
        if ($i <= $numberOfPages) echo '<a href="' . $link . $i . '' . $after . '"  class="buttonPage">' . $i . '</a>';
      }

      // Отображаем кнопку "Вперед" при необходимости
      if (self::$showNumberOfElements) {
        if ($pageNumber < $numberOfPages) echo '<a href="' . $link . ($pageNumber + 1) . '' . $after . '" class="buttonNext"><b>След. &gt;</b></a>';
        else echo '<b class="buttonNext1">След. &gt;</b>';
      }
      
      echo '</div>';
      if (self::$showNumberOfElements && $numberOfElements != 0) echo '<div class="numPagesElementsAmount"><span>(всего: ' . $numberOfElements . ')</span></div>';
    }
  }

  /**
   * Функция выдает блок алфавитного вывода
   *
   * @param string $link
   * @param integer $numberOfPages
   * @param integer $pageNumber
   * @param string $jsCode
   */
  public static function getAlphabet($link, $letter, $jsCode ='', $after = '') {
  	for ($i = 192; $i <= 223; $i++) {
  		echo '<a href="' . $link . '/' . 'text=' . iconv('WINDOWS-1251', 'UTF-8',chr($i)) . '&' . $after . '" >' . iconv('WINDOWS-1251', 'UTF-8', chr($i)) . '</a> ';
  	}
  	echo '<br />';
  	for ($i = 48; $i <= 57; $i++) {
  		echo '<a href="' . $link . '/' . 'text=' . chr($i) . '&' . $after . '" >' . iconv('WINDOWS-1251', 'UTF-8', chr($i)) . '</a> ';
  	}
  	echo '<br />';
  	for ($i = 65; $i <= 90; $i++) {
  		echo '<a href="' . $link . '/' . 'text=' . chr($i) . '&' . $after . '" >' . iconv('WINDOWS-1251', 'UTF-8', chr($i)) . '</a> ';
  	}
  }

  /**
   * Функция выдает блок постраничного вывода для Get - запросов, когда параметры передаются после "?"
   *
   * @param string $link
   * @param integer $numberOfPages
   * @param integer $pageNumber
   * @param string $jsCode
   */
  public static function getPagesInGet($link, $numberOfPages, $pageNumber = 1, $jsCode = '') {
    if (strpos($link, '?')) $joiner = '&'; // Если в ссылке присутствует "?", то следует использовать & для передачи номера страницы
    else $joiner = '?';
    global $icoAltPrevPage, $icoAltNextPage;
    if ($numberOfPages > 1) {
      echo '<div class="numPages">';
      if ($pageNumber > 1) echo  '<p><a href="' . $link  . $joiner . 'pageNum=' . ($pageNumber - 1) . '"><img src="' . W_IMAGES .'icons/pageLeft.gif" class="icoPage" alt="' . $icoAltPrevPage . '" /></a></p>';
      for ($i = $pageNumber - 10; $i < $pageNumber; $i++) {
        if ($i > 0) echo '<p><a href="' . $link . $joiner . 'pageNum=' . $i . '" >'.$i.'</a></p>';
      }
      echo '<p>' . $pageNumber . '</p>';
      for ($i = $pageNumber + 1; $i <= $pageNumber + 10; $i++) {
        if ($i <= $numberOfPages) echo '<p><a href="' . $link  . $joiner . 'pageNum=' . $i . '" >' . $i . '</a></p>';
      }
      if ($pageNumber < $numberOfPages) echo '<p><a href="' . $link  . $joiner . 'pageNum=' . ($pageNumber + 1) . '"><img src="' . W_IMAGES .'icons/pageRight.gif" class="icoPage" alt="' . $icoAltNextPage . '" /></a></p>';
      echo '</div>';
    }
  }

}
?>